/*
 * Copyright 2013 University of Padua, Italy
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package it.dei.unipd.healthservice.resource;

/**
 * Rappresenta i dati di un prodotto.
 * 
 * @author Simone Zennaro
 * @version 1.00
 */
public class Prodotto {

	/**
	 * codice univoco identificativo del prodotto generato dopo il salvataggio
	 * nel DB. 
	 */
	private final int codice;
	/**
	 * nome del prodotto
	 */
	private final String nome;
	/**
	 * nome dell'immagine del prodotto
	 */
	private final String immagine;
	/**
	 * indica se il prodotto viene prodotto solo su richiesta
	 */
	private final boolean aRichiesta;
	/**
	 * prezzo del prodotto
	 */
	private final float prezzo;
	/**
	 * descrizione del prodotto
	 */
	private final String descrizione;
	/**
	 * nome della categoria del prodotto
	 */
	private final String categoriaNome;
	/**
	 * il prodotto è in vendita
	 */
	private final boolean inVendita;
	
	/**
	 * Crea un nuovo prodotto.
	 * 
	 *@param codice
	 *			codice univoco identificativo del prodotto
	 *@param nome
	 *			nome del prodotto
	 *@param immagine
	 *			nome dell'immagine del prodotto
	 *@param aRichiesta
	 *			indica se il prodotto viene prodotto solo su richiesta
	 *@param prezzo
	 *			prezzo del prodotto
	 *@param descrizione
	 *			descrizione del prodotto
	 *@param categoriaNome
	 *		nome della categoria del prodotto
	 *@param inVendita prodotto in vendita
	 */
	public Prodotto(int codice,String nome,String immagine,
					boolean aRichiesta,float prezzo,String descrizione,String categoriaNome, boolean inVendita) {
		this.codice=codice;
		this.nome=nome;
		this.immagine=immagine;
		this.aRichiesta=aRichiesta;
		this.prezzo=prezzo;
		this.descrizione=descrizione;
		this.categoriaNome=categoriaNome;
		this.inVendita = inVendita;
	}
	/**
	 * Crea un nuovo prodotto.
	 * 
	 *@param codice
	 *			codice univoco identificativo del prodotto
	 *@param nome
	 *			nome del prodotto
	 *@param immagine
	 *			nome dell'immagine del prodotto
	 *@param aRichiesta
	 *			indica se il prodotto viene prodotto solo su richiesta
	 *@param prezzo
	 *			prezzo del prodotto
	 *@param descrizione
	 *			descrizione del prodotto
	 *@param categoriaNome
	 *		nome della categoria del prodotto
	 */
	public Prodotto(int codice,String nome,String immagine,
					boolean aRichiesta,float prezzo,String descrizione,String categoriaNome) {
		this(codice, nome, immagine, aRichiesta, prezzo, descrizione, categoriaNome, true);
	}
	/**
	 * Crea un nuovo prodotto.
	 * 
	 *@param nome
	 *			nome del prodotto
	 *@param immagine
	 *			nome dell'immagine del prodotto
	 *@param aRichiesta
	 *			indica se il prodotto viene prodotto solo su richiesta
	 *@param prezzo
	 *			prezzo del prodotto
	 *@param descrizione
	 *			descrizione del prodotto
	 * *@param categoriaNome
	 *		nome della categoria del prodotto
	 */
	public Prodotto(String nome,String immagine,
					boolean aRichiesta,float prezzo,String descrizione,String categoriaNome) {
		this(0,nome,immagine,aRichiesta,prezzo,descrizione,categoriaNome, true);
		
		
	}

	/**
	 * Restituisce il codice univoco identificativo del prodotto
	 * 
	 * @return codice univoco identificativo del prodotto
	 */
	public int getCodice(){
		return codice;
	}
	/**
	 * Restituisce il nome del prodotto
	 * 
	 * @return nome del prodotto
	 */
	public String getNome(){
		return nome;
	}
	/**
	 * Restituisce il nome dell'immagine del prodotto
	 * 
	 * @return nome dell'immagine del prodotto
	 */
	public String getImmagine(){
		return immagine;
	}
	/**
	 * Restituisce il valore booleano che indica 
	 * se il prodotto viene prodotto solo su richiesta
	 * 
	 * @return valore booleano che indica 
	 * se il prodotto viene prodotto solo su richiesta
	 */
	public boolean getARichiesta(){
		return aRichiesta;
	}
	/**
	 * Restituisce il prezzo del prodotto
	 * 
	 * @return prezzo del prodotto
	 */
	public float getPrezzo(){
		return prezzo;
	}
	/**
	 * Restituisce la descrizione del prodotto
	 * 
	 * @return descrizione del prodotto
	 */
	public String getDescrizione(){
		return descrizione;
	}
	
	/**
	 * Restituisce il nome della categoria del prodotto
	 * 
	 * @return nome della categoria del prodotto
	 */
	public String getCategoriaNome(){
		return categoriaNome;
	}
	/**
	 * @return the aRichiesta
	 */
	public boolean isaRichiesta() {
		return aRichiesta;
	}
	/**
	 * @return the inVendita
	 */
	public boolean isInVendita() {
		return inVendita;
	}
	
	

}
